package github.ziwukun.jsonql.utils;

import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

import cn.hutool.core.util.ReflectUtil;
import lombok.NonNull;

/**
 * 反射工具类
 * @author Hugo.Yu
 */
public class RefUtils extends ReflectUtil{
	
	/**
	 * 获取字段的泛型数据<br>
	 * 主要是用来获取集合类和Map的泛型数据
	 * @param field
	 * @param index
	 * @return
	 */
	public static Class<?> getFieldGenericType(@NonNull Field field,int index){
		Type genericType = field.getGenericType();
		ParameterizedType paramType = (ParameterizedType) genericType;
		try {
			return Class.forName(paramType.getActualTypeArguments()[index].getTypeName());
		} catch (ClassNotFoundException e) {
			throw new RuntimeException(e);
		}
	}
}
